{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "[![Dataflowr](https://raw.githubusercontent.com/dataflowr/website/master/_assets/dataflowr_logo.png)](https://dataflowr.github.io/website/)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "8FM8CQHKcfhx"
   },
   "source": [
    "# Practical 2: Simple implementation of backprop\n",
    "\n",
    "[Video timestamp](https://youtu.be/Z6H3zakmn6E?t=2640)\n",
    "\n",
    "Here we implement a simple backpropagation algorithm with `numpy` for the following problem:\n",
    "\n",
    "We generate points $(x_t,y_t)$ where $y_t= \\exp(w^*x_t+b^*)$, i.e $y^*_t$ is obtained by applying a deterministic function to $x_t$ with parameters $w^*$ and $b^*$. Our goal is to recover the parameters $w^*$ and $b^*$ from the observations $(x_t,y_t)$.\n",
    "\n",
    "To do this, we use SGD to minimize $\\sum_t(y^t - \\exp(w x_t+b))^2$ with respect to $w$ and $b$.\n",
    "\n",
    "In these practicals, we will implement **Stochastic Gradient Descent with minibatches of size 1** and not Batched Gradient Descent as seen in lesson 2.\n",
    "\n",
    "The modification to the algorithm is as follows: we want to minimize the loss given by:\n",
    "$$\n",
    "loss = \\sum_t\\underbrace{\\left(\\exp(w x_t+b)-y_t \\right)^2}_{loss_t}.\n",
    "$$\n",
    "\n",
    "To minimize the loss we first compute the gradient of each $loss_t$:\n",
    "$\\frac{\\partial{loss_t}}{\\partial w}$, and $\\frac{\\partial{loss_t}}{\\partial b}$.\n",
    "\n",
    "For one epoch, **Stochastic Gradient Descent with minibatches of size 1** then updates the weigts and bias by running the following loop: \n",
    "\n",
    "for $t \\in \\{1,\\dots,30\\}$, \n",
    "\n",
    "\\begin{eqnarray*}\n",
    "w_{t+1}&=&w^1_{t}-\\alpha\\frac{\\partial{loss_t}}{\\partial w} \\\\\n",
    "b_{t+1}&=&b_{t}-\\alpha\\frac{\\partial{loss_t}}{\\partial b},\n",
    "\\end{eqnarray*}\n",
    "\n",
    "if $t = 30$, set $w_1=w_{31}$, and $b_1=b_{31}$.\n",
    "\n",
    "$\\alpha>0$ is called the learning rate.\n",
    "\n",
    "Then we run several epochs...\n",
    "\n",
    "We see that one epoch is much less costly than in the Batched Gradient Descent algorithm as you only need to have acces to one sample to make one update, whereas in the batched setting, you need to make a pass on the whole dataset to make an update. Of course, we are not computing the gradient here and the partial derivatives can be seen as noisy estimation of the gradient."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "z-62DGjicfh3"
   },
   "outputs": [],
   "source": [
    "# You do not need PyTorch for these practicals\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "SQlF4jhfcfiD"
   },
   "outputs": [],
   "source": [
    "w, b = 0.5, 2\n",
    "xx = np.arange(0,1,.01)\n",
    "yy = np.exp(w*xx+b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "4OIvcmsqcfiL"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7fa33ac846a0>]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fa33cd1e2b0>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(yy)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "siSZvSBBcfiW"
   },
   "source": [
    "Following what we just saw in the course, you need to implement each of the basic operations: `(.*w), (.+b), exp(.)` with a forward method, a backward method and a step method."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "Xfy5oCZBMnVj"
   },
   "source": [
    "If you are not familiar with [classes](https://docs.python.org/3/tutorial/classes.html) in Python, you should learn its basics as it will be required to follow the rest of the course.\n",
    "\n",
    "To help you, I have implemented the `(.+b)` operation as a Python class below:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "PeY2DlqNcfiZ"
   },
   "outputs": [],
   "source": [
    "class add_bias(object):\n",
    "    def __init__(self,b):\n",
    "        # initialize with a bias b\n",
    "        self.b = b\n",
    "        \n",
    "    def forward(self, x):\n",
    "        # return the result of adding the bias      \n",
    "        return x + self.b\n",
    "    \n",
    "    def backward(self,grad):\n",
    "        # save the gradient (to update the bias in the step method) and return the gradient backward\n",
    "        self.grad = grad\n",
    "        return grad\n",
    "    \n",
    "    def step(self, learning_rate):\n",
    "        # update the bias\n",
    "        self.b -= learning_rate*self.grad        "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "UBLMKY1nMnVm"
   },
   "source": [
    "Consider now a simpler problem where you have $z_t = x_t+b^*$ and your task is to estmiate $b^*$ by minimizing the loss $\\sum_t(x_t+b-z_t)^2$ as a function of $b$ with SGD. You can use the `add_bias` defined above as follows:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "lZpxeNqQMnVn"
   },
   "outputs": [],
   "source": [
    "# first compute the z_t with a true bias of 5:\n",
    "zz = xx+5\n",
    "\n",
    "#start with an initial guess of 1 for the bias:\n",
    "My_add_bias = add_bias(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "NLoIijKPMnVq"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.1"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "j = 10\n",
    "# your prediction will be for each sample\n",
    "z_pred = My_add_bias.forward(xx[j])\n",
    "z_pred"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "-ppGMgc7MnVt"
   },
   "outputs": [],
   "source": [
    "# start with the gradient of the quadratic loss\n",
    "grad = 2*(z_pred-zz[j])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "lVIy0xeAMnVv"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-7.999999999999999"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# backpropagate the gradient to the parameter b\n",
    "My_add_bias.backward(grad)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "cJtZICCiMnVy"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.08"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# make an update of the bias\n",
    "My_add_bias.step(1e-2)\n",
    "My_add_bias.b"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "3ZWF5vaTMnV0"
   },
   "source": [
    "The code above corresponds to one SGD update.\n",
    "Below, I coded the training loop for SGD where the update on the parameter is done each time you see a sample: for each sample $j$, you compute the associated "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "_p1nC0dpMnV1"
   },
   "outputs": [],
   "source": [
    "My_add_bias = add_bias(1)\n",
    "estimated_b = [1]\n",
    "for i in range(500):\n",
    "    # take a random indice\n",
    "    j = np.random.randint(1, len(xx))\n",
    "    z_pred = My_add_bias.forward(xx[j])\n",
    "    grad = 2*(z_pred-zz[j])\n",
    "    _ = My_add_bias.backward(grad)\n",
    "    My_add_bias.step(1e-2)\n",
    "    estimated_b.append(My_add_bias.b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "y3cekk-nMnV4"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7fa33ac240b8>]"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fa33acb3cf8>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(estimated_b)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "EaqpsHK6MnV6"
   },
   "source": [
    "Although SGD is computing a noisy version of the gradient, we see that SGD converges to the right solution in this case.\n",
    "\n",
    "Now it is your turn!\n",
    "Following what we just saw in the course, you need to implement each of the basic operations: `(.*w), exp(.)` with a forward method, a backward method and a step method.\n",
    "\n",
    "![backprop3](https://dataflowr.github.io/notebooks/Module2/img/backprop3.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "58L4gjz1MnV7"
   },
   "outputs": [],
   "source": [
    "class multiplication_weight(object):\n",
    "    def __init__(self, w):\n",
    "        # initialize with a weight w\n",
    "        self.w = w\n",
    "        \n",
    "    def forward(self, x):\n",
    "        # return the result of multiplying by weight\n",
    "        self.saved_x = x\n",
    "        return self.w*x\n",
    "        \n",
    "    def backward(self,grad):\n",
    "        # save the gradient and return the gradient backward\n",
    "        self.grad = self.saved_x*grad\n",
    "        return grad*self.w\n",
    "    \n",
    "    def step(self, learning_rate):\n",
    "        # update the weight\n",
    "        self.w -= learning_rate*self.grad\n",
    "\n",
    "class my_exp(object):\n",
    "    # no parameter\n",
    "    def forward(self, x):\n",
    "        # return exp(x)\n",
    "        self.saved_exp = np.exp(x)\n",
    "        return np.exp(x)\n",
    "    \n",
    "    def backward(self,grad):\n",
    "        # return the gradient backward\n",
    "        return self.saved_exp*grad\n",
    "    \n",
    "    def step(self, learning_rate):\n",
    "        # any parameter to update?\n",
    "        # Hint https://docs.python.org/3/reference/simple_stmts.html#the-pass-statement\n",
    "        pass"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "koymOfVlcfih"
   },
   "source": [
    "Now, you will need to compose sequentially these operations and here you need to code a class composing operations. This class will have a forward, a backward and a step method and also a compute_loss method."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "EM5M8GCecfik"
   },
   "outputs": [],
   "source": [
    "class my_composition(object):\n",
    "    def __init__(self, layers):\n",
    "        # initialize with all the operations (called layers here!) in the right order...\n",
    "        self.layers = layers\n",
    "        \n",
    "    def forward(self, x):\n",
    "        # apply the forward method of each layer\n",
    "        for layer in self.layers:\n",
    "            x = layer.forward(x)\n",
    "        return x\n",
    "    \n",
    "    def compute_loss(self, y_est, y_target):\n",
    "        # use the L2 loss\n",
    "        # return the loss and save the gradient of the loss\n",
    "        self.loss_grad  = 2*(y_est-y_target)\n",
    "        return (y_target-y_est)**2\n",
    "    \n",
    "    def backward(self):\n",
    "        # apply backprop sequentially, starting from the gradient of the loss\n",
    "        # Hint: https://docs.python.org/3/library/functions.html#reversed\n",
    "        current_grad = self.loss_grad\n",
    "        for layer in reversed(self.layers):\n",
    "            current_grad = layer.backward(current_grad)\n",
    "    \n",
    "    def step(self, learning_rate):\n",
    "        # apply the step method of each layer\n",
    "        for layer in self.layers:\n",
    "            layer.step(learning_rate)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "Hs1M-kebcfir"
   },
   "source": [
    "Now you need to code the 'training' loop. Keep track of the loss, weight and bias computed at each epoch."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "IWJgoCEKcfiu"
   },
   "outputs": [],
   "source": [
    "my_fit = my_composition([multiplication_weight(1),add_bias(1), my_exp()])\n",
    "learning_rate = 1e-4\n",
    "losses =[]\n",
    "ws = []\n",
    "bs = []\n",
    "for i in range(5000):\n",
    "    # take a random indice\n",
    "    j = np.random.randint(1, len(xx))\n",
    "    # you can compare with\n",
    "    #j = i % len(xx)\n",
    "    # compute the estimated value of y with the current values of the parameters\n",
    "    y_est = my_fit.forward(xx[j])\n",
    "    # compute the loss and save it\n",
    "    loss = my_fit.compute_loss(y_est,yy[j])\n",
    "    losses.append(loss)\n",
    "    # update the parameters\n",
    "    my_fit.backward()\n",
    "    my_fit.step(learning_rate)\n",
    "    #and save them\n",
    "    ws.append(my_fit.layers[0].w)\n",
    "    bs.append(my_fit.layers[1].b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "V7mp0eEEcfi2"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.5063395495142375"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "my_fit.layers[0].w"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "t54ayZNDcfi9"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.9962713949985544"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "my_fit.layers[1].b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "4Gqz5CxzcfjG"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7fa33ab6cd68>]"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fa33ac24cf8>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(losses)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "kaHnaX8jcfjN"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7fa33aad0978>]"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fa33ab5e588>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(bs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "ch28XtPUcfjV"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7fa33aaae710>]"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fa33aac1f28>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(ws)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab_type": "text",
    "id": "Q4Qb9d65NFpo"
   },
   "source": [
    "Now you understand how Pytorch deals with automatic differentiation!!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Challenge**\n",
    "\n",
    "Adapt your code to solve the following challenge:\n",
    "\n",
    "Some small modifications:\n",
    "- First modification: we now generate points $(x_t,y_t)$ where $y_t= \\exp(w^*\\cos(x_t)+b^*)$, i.e $y^*_t$ is obtained by applying a deterministic function to $x_t$ with parameters $w^*$ and $b^*$. Our goal is still to recover the parameters $w^*$ and $b^*$ from the observations $(x_t,y_t)$.\n",
    "\n",
    "- Second modification: we now generate points $(x_t,y_t)$ where $y_t= \\exp(w^*\\cos(p^*x_t)+b^*)$, i.e $y^*_t$ is obtained by applying a deterministic function to $x_t$ with parameters $p^*$, $w^*$ and $b^*$. Our goal is still to recover the parameters from the observations $(x_t,y_t)$.\n",
    "\n",
    "![](https://i.imgur.com/bBlG8RH.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7fa33aa1d550>]"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fa33aa370b8>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "p, w, b = 0.3, 0.5, 2\n",
    "xx = np.arange(-10,10,.01)\n",
    "yy = (w*np.cos(p*xx)+b)\n",
    "\n",
    "plt.plot(xx,yy)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "class my_cos(object):\n",
    "    # no parameter\n",
    "    def forward(self, x):\n",
    "        self.saved_x = x\n",
    "        return np.cos(x)\n",
    "    \n",
    "    def backward(self,grad):\n",
    "        # return the gradient backward\n",
    "        return -np.sin(self.saved_x)*grad\n",
    "    \n",
    "    def step(self, learning_rate):\n",
    "        pass"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "class add_bias(object):\n",
    "    def __init__(self,b):\n",
    "        # initialize with a bias b\n",
    "        self.b = b\n",
    "        \n",
    "    def forward(self, x):\n",
    "        # return the result of adding the bias      \n",
    "        return x + self.b\n",
    "    \n",
    "    def backward(self,grad):\n",
    "        # save the gradient (to update the bias in the step method) and return the gradient backward\n",
    "        self.grad = grad\n",
    "        return grad\n",
    "    \n",
    "    def step(self, learning_rate):\n",
    "        # update the bias\n",
    "        pass "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7fa33abd0d68>]"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fa33aa6e748>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "my_fit = my_composition([multiplication_weight(1.2),my_cos(),multiplication_weight(1.2),add_bias(2)])\n",
    "\n",
    "plt.plot(xx,yy)\n",
    "plt.plot(xx, my_fit.forward(xx))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "learning_rate = 1e-2\n",
    "losses =[]\n",
    "ps = []\n",
    "ws = []\n",
    "bs = []\n",
    "for i in range(50000):\n",
    "    # take a random indice\n",
    "    j = np.random.randint(1, len(xx))\n",
    "    # you can compare with\n",
    "    #j = i % len(xx)\n",
    "    # compute the estimated value of y with the current values of the parameters\n",
    "    y_est = my_fit.forward(xx[j])\n",
    "    # compute the loss and save it\n",
    "    loss = my_fit.compute_loss(y_est,yy[j])\n",
    "    losses.append(loss)\n",
    "    # update the parameters\n",
    "    my_fit.backward()\n",
    "    my_fit.step(learning_rate)\n",
    "    #and save them\n",
    "    ps.append(my_fit.layers[0].w)\n",
    "    ws.append(my_fit.layers[2].w)\n",
    "    bs.append(my_fit.layers[3].b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7fa33a60c710>]"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fa33a9d52e8>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(losses)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7fa33a3e4048>]"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fa33a66b550>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(ps)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7fa33a586390>]"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fa33a5c56d8>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(ws)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7fa33a5646d8>]"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fa33a5ebd30>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(bs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7fa33a53cf60>]"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fa33a53cda0>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(xx,yy)\n",
    "plt.plot(xx, my_fit.forward(xx))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "def fun(x,p,w,b=b):\n",
    "    return np.exp(w*np.cos(p*x)+b)\n",
    "\n",
    "def loss_fun(f,xx=xx,yy=yy):\n",
    "    return np.sum((f(xx)-yy)**2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "range_p = np.arange(-0.5,1.5,.01)\n",
    "range_w = np.arange(-0.5,1.5,.01)\n",
    "s_p = len(range_p)\n",
    "s_w = len(range_w)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "loss_arr = np.zeros((s_p,s_w))\n",
    "for (i,p) in enumerate(range_p):\n",
    "    for (j,w) in enumerate(range_w):\n",
    "        f = lambda x: fun(x,p,w)\n",
    "        loss_arr[s_p-i-1,j] = np.log(loss_fun(f))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "def heatmap2d(arr: np.ndarray, ps, ws):\n",
    "    plt.figure(figsize=(15, 15))\n",
    "    plt.imshow(arr, cmap='viridis',extent=[-0.5,1.5,-0.5,1.5])\n",
    "    plt.colorbar()\n",
    "    plt.plot(ps,ws, color='red')\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fa33a525518>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "heatmap2d(loss_arr, ps, ws)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To better understand why this is not converging, you can have a look at this [Tweet](https://twitter.com/marc_lelarge/status/1613106313420222465?s=20)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "colab": {},
    "colab_type": "code",
    "id": "x9x7Vwc_MnWT"
   },
   "source": [
    "[![Dataflowr](https://raw.githubusercontent.com/dataflowr/website/master/_assets/dataflowr_logo.png)](https://dataflowr.github.io/website/)"
   ]
  }
 ],
 "metadata": {
  "colab": {
   "include_colab_link": true,
   "name": "02_backprop.ipynb",
   "provenance": []
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
